#ifndef __RC522_FUNCTION_H
#define	__RC522_FUNCTION_H

#include "stm32f10x_it.h"
#include "stmflash.h"
#include "string.h"
#include "lcd1602.h"
#include <stdbool.h>
#include "rc522_config.h"

#define FLASH_SAVE_ADDR   0X0801F000 				//设置FLASH 保存地址(必须为偶数)

#define MAX_PEOPLE   6 //最大存储MAX_PEOPLE - 1张IC卡
#define SIZE 10
#define macDummy_Data 0x00

void PcdReset (void);   //复位
void M500PcdConfigISOType (u8 type);                    //工作方式
char PcdRequest (u8 req_code, u8 * pTagType); //寻卡
char PcdAnticoll (u8 * pSnr);                   //读卡号
char IC_CMT (u8 * PID, u8 * KEY, u8 RW, u8 * Dat);
u8 GET_PID(u8 *PID);
unsigned char IC_test(void);

//-------------------------RC522功能函数模块--------------------
void CHECK_NEW_MCU(void); //检查是否是新的单片机，是的话清空存储区，否则保留 
u8 COMPER_ID_MODE(void);//正常待机刷卡函数，当返回1时，说明识别到正确的卡号
void ADD_ID_MODE(void);//注册IC函数
void DEL_ID_MODE(void);//删除IC卡函数


//----------------fzy封装-----------------//
/*
	省略了注册步骤，不需要将卡的UID号写入单片机flash , 应用层开发时可直接写卡、读卡
	卡有16个扇区，每个扇区有4个数据块，每个数据块可以放16字节数据
*/
void RC522_Init(void);	//初始化
bool check_card();		//检查是否卡存在
char WriteFlexibleDataToCard(u8 sector, u8 block, void *data, u8 dataLength);//在sector扇区的block写入data数据,需要传入指针
char ReadFlexibleDataFromCard(u8 sector, u8 block, void *buffer, u8 bufferLength);//在sector扇区的block读出data数据,需要传入指针
char ClearCard();	//清除卡的数据

#endif /* __RC522_FUNCTION_H */

